<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 构造函数是es5用来创建对象的
        
        //构造函数的特点
        //1.函数名首字母大写
        //2.函数内只用this关键字给创建的对象添加属性和方法
        //3.使用new关键字调用函数创建实例对象

        function Ren(name){//形参
            // ren 所创建的对象
            this.name = name;
        }

        // 构造函数名.prototype.函数名 = function
        Ren.prototype.run = function(){
              console.log("这是run函数内运行的代码");
        }
        Ren.prototype.sex = ture;
       

        var obj = new Ren("lili");//实参
        var obj1 = new Ren("李四");
        console.log(obj);
        console.log(obj1);

        // 关于原型 __proto__ (只读)或者prototype(可读可增)
        // 每个对象都自带一个属性,这个属性prototype,属性值是一个对象，这个对象叫原型对象


        //构造函数的继承
        function Ren2(name){
            // 调用一个函数，是将函数内的代码在调用位置执行一遍
            Ren.call(this,name);
        }

        var ren = new Ren2("aaa");
        // run1.run() // error

        // 原型的继承
        // 对象的contructor 属性是创建当前的对象的构造函数
        console.log(ren,costructor); //Ren2

        // Ren2.prototype = Object.create(Ren.prototype);
        // var ren2 = new Ren2("aaa");
        // console.log(ren2.constructor); //Ren

        Ren2.prototype = Object.create(Ran.prototype);
        Ren2.prototype.costructor = Ren2;

        var ren = new Ren2('aaa');
        console.log(ren1.constructop); // Ren2
        // console.log(crea);
    </script>
</body>
</html>